<?xml version="1.0" encoding="utf-8"?>
<!--
                                                                                     
 h       t     t                ::       /     /                     t             / 
 h       t     t                ::      //    //                     t            // 
 h     ttttt ttttt ppppp sssss         //    //  y   y       sssss ttttt         //  
 hhhh    t     t   p   p s            //    //   y   y       s       t          //   
 h  hh   t     t   ppppp sssss       //    //    yyyyy       sssss   t         //    
 h   h   t     t   p         s  ::   /     /         y  ..       s   t    ..   /     
 h   h   t     t   p     sssss  ::   /     /     yyyyy  ..   sssss   t    ..   /     
                                                                                     
	<https://y.st./>
	Copyright © 2016 Alex Yst <mailto:copyright@y.st>

	This program is free software: you can redistribute it and/or modify
	it under the terms of the GNU General Public License as published by
	the Free Software Foundation, either version 3 of the License, or
	(at your option) any later version.

	This program is distributed in the hope that it will be useful,
	but WITHOUT ANY WARRANTY; without even the implied warranty of
	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
	GNU General Public License for more details.

	You should have received a copy of the GNU General Public License
	along with this program. If not, see <https://www.gnu.org./licenses/>.
-->
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
		<base href="https://y.st./en/weblog/2016/05-May/20.xhtml"/>
		<title>My mother doesn&apos;t understand compromise. &lt;https://y.st./en/weblog/2016/05-May/20.xhtml&gt;</title>
		<link rel="icon" type="image/png" href="/link/CC_BY-SA_4.0/y.st./icon.png"/>
		<link rel="stylesheet" type="text/css" href="/link/main.css"/>
		<script type="text/javascript" src="/script/javascript.js"/>
		<meta name="viewport" content="width=device-width"/>
	</head>
	<body>
<nav>
	<p>
		<a href="/en/coursework/">Coursework</a> |
		<a href="/en/take-down/">Take-down requests</a> |
		<a href="/en/">Home</a> |
		<a href="/en/a/about.xhtml">About</a> |
		<a href="/en/a/contact.xhtml">Contact</a> |
		<a href="/a/canary.txt">Canary</a> |
		<a href="/en/URI_research/"><abbr title="Uniform Resource Identifier">URI</abbr> research</a> |
		<a href="/en/opinion/">Opinions</a> |
		<a href="/en/law/">Law</a> |
		<a href="/en/recipe/">Recipes</a> |
		<a href="/en/a/links.xhtml">Links</a> |
		<a href="/en/weblog/2016/05-May/20.xhtml.asc">{this page}.asc</a>
	</p>
	<hr/>
	<p>
		Weblog index:
		<a href="/en/weblog/memories">Memories</a> |
		<a href="/en/weblog/"><abbr title="American Standard Code for Information Interchange">ASCII</abbr> calendars</a> |
		<a href="/en/weblog/index_ol_ascending.xhtml">Ascending list</a> |
		<a href="/en/weblog/index_ol_descending.xhtml">Descending list</a>
	</p>
	<hr/>
	<p>
		Jump to entry:
		<a href="/en/weblog/2015/03-March/07.xhtml">&lt;&lt;First</a>
		<a rel="prev" href="/en/weblog/2016/05-May/19.xhtml">&lt;Previous</a>
		<a rel="next" href="/en/weblog/2016/05-May/21.xhtml">Next&gt;</a>
		<a href="/en/weblog/latest.xhtml">Latest&gt;&gt;</a>
			</p>
			<hr/>
</nav>
		<header>
			<h1>My mother doesn&apos;t understand compromise.</h1>
			<p>Day 00440: <time>Friday, 2016 May 20</time></p>
		</header>
<p>
	I received a letter by post today informing me that the signature on my primary election ballot has been challenged.
	My legal name is now going on record on the list of voters whose signatures have been challenged and unless I mail in a new voter registration via post and it arrives before the thirty-first of the month, my vote won&apos;t count and I&apos;ll lose my right to vote and sign petitions until I&apos;ve sent it in.
	For some reason, the voter registration form requires first class postage, but at least that means that it&apos;ll probably arrive on time, as letters mailed first class are supposed to arrive in one to three days.
</p>
<p>
	While I was out delivering the form to the post office, I took the opportunity to check on my dental appointment time.
	I knew that it was on the twenty-third, but I failed to keep track of what time it was.
	I believed that it was at 13:00, but I wasn&apos;t entirely sure.
	As it turns out, it was actually at 15:00, so it was a good thing that I double checked.
</p>
<p>
	My mother was complaining that the fruit and vegetables are going bad before anyone eats them.
	I used to use them for making soup, but when my mother started complaining about the smell of my cooking, I had to switch to mostly just eating prepackaged foods.
	Cyrus asked if maybe I could use the remaining onions before they went bad, so I had to remind them of why I don&apos;t cook.
	Our mother had the gall to claim that I didn&apos;t stop cooking for her! I&apos;ve been feeling awful since I quit cooking.
	I think I&apos;m a bit malnourished.
	I&apos;m certainly not doing this for myself! My mother claims that if I was really doing it for them, I&apos;d quit being vegan, as that&apos;s what they really want.
	Clearly, my mother doesn&apos;t understand compromise at all.
	They&apos;ve asked me to do two things: to quit cooking and to quit being vegan.
	I&apos;ve done the only one of the two that I can do with a clear conscience.
	I&apos;m doing as much for them as I ethically can.
</p>
<p>
	My mobile is on the fritz again.
	This time, it refuses to read <abbr title="Secure Digital">SD</abbr> cards that are formatted as Ext4, claiming that they are all damaged.
	It can still read <abbr title="File Allocation Table">FAT</abbr> <abbr title="Secure Digital">SD</abbr> cards, but that doesn&apos;t really help me.
	I need the <abbr title="Secure Digital">SD</abbr> cards to store my music collection; each track&apos;s file name is based on the name of the song, the album name, and the name of the album artist.
	Several artists titled their songs as questions, which is perfectly reasonable, but <abbr title="File Allocation Table">FAT</abbr> can&apos;t handle question marks in file names.
	It doesn&apos;t seem worth it to copy my music collection and check through the copy looking for titles that aren&apos;t <abbr title="File Allocation Table">FAT</abbr>-compatible.
	<abbr title="File Allocation Table">FAT</abbr> simply doesn&apos;t have any redeeming qualities as far as I&apos;m aware and there&apos;s no point wasting time trying to force <abbr title="File Allocation Table">FAT</abbr> to work for me.
	This is frustrating, hopefully I can get my mobile straightened out.
</p>
<p>
	It&apos;s been bothering me that a <abbr title="PHP: Hypertext Preprocessor">PHP</abbr> interface can&apos;t ensure that methods do what they are meant to do.
	Instead, they can only require that the methods be present and accept the desired arguments.
	I need to be able to insure that some classes behave very much like the main <abbr title="Uniform Resource Identifier">URI</abbr> class, but these classes cannot extend the main <abbr title="Uniform Resource Identifier">URI</abbr> class.
	The main <abbr title="Uniform Resource Identifier">URI</abbr> class parses, validates, and normalizes the basic <abbr title="Uniform Resource Identifier">URI</abbr> syntax.
	However, some <abbr title="Uniform Resource Identifier">URI</abbr> schemes use a nonconformant scheme-specific syntax.
	I considered changing my new interface into an abstract class, but even that presents problems.
	It could insure that the basics are implemented properly, though it would need to be less strict than the main <abbr title="Uniform Resource Identifier">URI</abbr> class.
	It wouldn&apos;t be able to parse <abbr title="Uniform Resource Identifier">URI</abbr>s, that would be left to child classes to implement.
	Instead, it would only handle basic data getting/setting and serialization/deserialization.
	The serialization method would just redirect input to the <code>__tostring()</code> method and the deserialization method would just redirect input to the <code>__construct()</code> method, a method that must be defined in child classes.
	However, this setup would open up the main <abbr title="Uniform Resource Identifier">URI</abbr> class (which would extend this class) to nonconformant data by allowing child classes of the main <abbr title="Uniform Resource Identifier">URI</abbr> class to call methods from the abstract class directly, bypassing the validation and normalization provided by the main <abbr title="Uniform Resource Identifier">URI</abbr> class.
	The abstract class&apos; setters could be called with malformed strings.
	This isn&apos;t acceptable.
	If a class wants to be treated as a <abbr title="Uniform Resource Identifier">URI</abbr> without being subjected to this normalization and validation, it should extend the abstract class and not the main <abbr title="Uniform Resource Identifier">URI</abbr> class.
	If an object is detected to be of a class that descends from the main <abbr title="Uniform Resource Identifier">URI</abbr> class, it should be possible to expect that class to conform to the basic standards.
</p>
<p>
	As a side note, I&apos;ve been using a sort of pseudo-namespace within the <code>\st\y\uri</code> namespace for <abbr title="Uniform Resource Identifier">URI</abbr>-related classes that don&apos;t directly implement a specific <abbr title="Uniform Resource Identifier">URI</abbr> scheme.
	Basically, I&apos;ve been using well-placed underscores to insure that these classes aren&apos;t interpreted as scheme names by a planned method that will try to detect the correct class to use based on the scheme of a <abbr title="Uniform Resource Identifier">URI</abbr>.
	Underscores will be used by that method to encode characters that may appear in <abbr title="Uniform Resource Identifier">URI</abbr> schemes but that may not appear in <abbr title="PHP: Hypertext Preprocessor">PHP</abbr> labels.
	This means that only three characters will ever appear after an underscore in one of my scheme-implementing classes: ef (representing a full stop), aitch (representing a hyphen), and pee (representing a plus sign).
	If I make sure to use an underscore in all of the intermediate classes and follow that underscore with any alphanumeric character that isn&apos;t on that list, those classes won&apos;t confuse the method that uses the scheme-related classes, so that&apos;s what I&apos;ve been doing.
	This is the wrong way to go about this.
	Some of these classes aren&apos;t ones that I&apos;d normally even want an underscore in the name of, as they seem like single-word class names to me.
	As I said, this creates a sort of pseudo-namespace.
	Why should I be using fake namespaces? That seems awfully messy when I have real name spaces at my disposal! Next time that I have time to work on <a href="https://git.vola7ileiax4ueow.onion/y.st./include.d">include.d</a>, I should move all of these classes into their own sub-namespace.
</p>
<p>
	At the end of the day, we put together our garage sale signs so that we can get them set up tomorrow.
	Also tomorrow, it seems that we&apos;ll have overnight guests.
	My mother has friends that are in town for some sort of religious event and want a place to stay so that they won&apos;t have to drive home tired.
</p>
		<hr/>
		<p>
			Copyright © 2016 Alex Yst;
			You may modify and/or redistribute this document under the terms of the <a rel="license" href="/license/gpl-3.0-standalone.xhtml"><abbr title="GNU&apos;s Not Unix">GNU</abbr> <abbr title="General Public License version Three or later">GPLv3+</abbr></a>.
			If for some reason you would prefer to modify and/or distribute this document under other free copyleft terms, please ask me via email.
			My address is in the source comments near the top of this document.
			This license also applies to embedded content such as images.
			For more information on that, see <a href="/en/a/licensing.xhtml">licensing</a>.
		</p>
		<p>
			<abbr title="World Wide Web Consortium">W3C</abbr> standards are important.
			This document conforms to the <a href="https://validator.w3.org./nu/?doc=https%3A%2F%2Fy.st.%2Fen%2Fweblog%2F2016%2F05-May%2F20.xhtml"><abbr title="Extensible Hypertext Markup Language">XHTML</abbr> 5.2</a> specification and uses style sheets that conform to the <a href="http://jigsaw.w3.org./css-validator/validator?uri=https%3A%2F%2Fy.st.%2Fen%2Fweblog%2F2016%2F05-May%2F20.xhtml"><abbr title="Cascading Style Sheets">CSS</abbr>3</a> specification.
		</p>
	</body>
</html>

